package cara.tp1.server;

import cara.tp1.server.domain.Livre;
import cara.tp1.server.domain.Personne;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * User: Simon BILLIAU
 * Date: 03/02/2014
 */
public class BibliothequeImpl implements  Bibliotheque{

    private   List<Livre> livreList;
    private   List<Personne> personneList;

    private Map<Personne,List<Livre>> livresEmprunte;

    private static BibliothequeImpl instance;

    private BibliothequeImpl(){
        livreList = new ArrayList<Livre>();
        personneList = new ArrayList<Personne>();

        Personne p = new Personne();
        p.setNom("Billiau");
        p.setPrenom("Simon");

        personneList.add(p);

        Livre livre = new Livre();
        livre.setAuteur("Victor Hugo");
        livre.setEditeur("Gallimard");
        livre.setISBN("1111111");
        livre.setTitre("Les Miserables");

        Livre livre2 = new Livre();
        livre2.setAuteur("Voltaire");
        livre2.setEditeur("Flammarion");
        livre2.setISBN("2222222");
        livre2.setTitre("Candide");

        Livre livre3 = new Livre();
        livre3.setAuteur("Gustave Flaubert");
        livre3.setEditeur("Nathan");
        livre3.setISBN("3333333");
        livre3.setTitre("Madame Bovary");

        Livre livre4 = new Livre();
        livre4.setAuteur("Emile Zola");
        livre4.setEditeur("Nathan");
        livre4.setISBN("4444444");
        livre4.setTitre("Germinal");


        livreList.add(livre);
        livreList.add(livre2);
        livreList.add(livre3);
        livreList.add(livre4);

        livresEmprunte= new HashMap<Personne, List<Livre>>();
    }

    public static BibliothequeImpl getInstance(){

        if (instance == null) {
            instance = new BibliothequeImpl();
            return instance;
        } else {
            return instance;
        }
    }

    public  List<Livre> getLivreList() {
        return this.livreList;
    }

    public  void setLivreList(List<Livre> livreList) {
        this.livreList = livreList;
    }

    public  List<Personne> getPersonneList() {
        return this.personneList;
    }

    public  void setPersonneList(List<Personne> personneList) {
        this.personneList = personneList;
    }

    public void ajouterLivre(Livre livre){
        this.livreList.add(livre);
    }


    @Override
    public void supprimerLivre(Livre livre) {
        this.livreList.remove(livre);
    }

    @Override
    public void ajouterPersonne(Personne personne) {
        this.personneList.add(personne);
    }

    @Override
    public void supprimmerPersonne(Personne personne) {
        this.personneList.remove(personne);
    }

    public Map<Personne, List<Livre>> getLivresEmprunte() {
        return livresEmprunte;
    }

    public void setLivresEmprunte(Map<Personne, List<Livre>> livresEmprunte) {
        this.livresEmprunte = livresEmprunte;
    }


}
